package cc.dd.marketing.core.base;

import cc.dd.marketing.api.request.base.BaseRequest;
import cc.dd.marketing.api.response.base.BaseResponse;
import cc.dd.marketing.core.domain.RuleInnerDTO;
import cc.dd.marketing.common.ContextParam;

/**
 * 响应对象解析器
 *
 * @author dongsufeng
 * @date 2022/9/9 2:30 PM
 */
public interface ResponseParser<REQ extends BaseRequest, DTO extends RuleInnerDTO> {
    /**
     * 构造响应对象
     * <p>
     * 此处采用泛型设计，是因为实际过程中发现需要做两次类转换，为了减少转换的代码
     * 但是只有一个方法用到了，感觉又有点鸡肋
     * 也可以用多态和对象转换替代泛型
     *
     * @param contextParam
     * @return
     */
    BaseResponse buildResponse(ContextParam<REQ, DTO> contextParam);
}
